import 相关数据_处理函数集
# 导入 json模块
import json
# 导包 导入功能Line构建折线图对象
from pyecharts.charts import Line
# 导入功能 标题和图例,工具箱,视觉映射
from pyecharts.options import TitleOpts, LegendOpts, ToolboxOpts, VisualMapOpts, LabelOpts


# 获取数据
美国疫情数据 = open("/资料数据/美国.txt", "r", encoding="utf-8")
日本疫情数据 = open("/资料数据/日本.txt", "r", encoding="utf-8")
印度疫情数据 = open("/资料数据/印度.txt", "r", encoding="utf-8")

# 处理数据不合规的地方,去掉开头和结尾的一些东西
美国疫情数据 = 相关数据_处理函数集.文件开头结尾处理(美国疫情数据.read())
日本疫情数据 = 相关数据_处理函数集.文件开头结尾处理(日本疫情数据.read())
印度疫情数据 = 相关数据_处理函数集.文件开头结尾处理(印度疫情数据.read())

# json格式转换成Python数据(字典)
美国疫情数据 = json.loads(美国疫情数据)
日本疫情数据 = json.loads(日本疫情数据)
印度疫情数据 = json.loads(印度疫情数据)


# 数据处理完了,我们获取图表需要的数据  x轴和y轴  (注意我们只要2020年一年的其他省去)

# 获取 日期 数据用于X轴
# x轴美国日期数据 = 美国疫情数据['data'][0]['trend']['updateDate'][:314:1]
x轴日本日期数据 = 日本疫情数据['data'][0]['trend']['updateDate'][:315:1]  # 日本日期最全用日本的日期数据
# x轴印度日期数据 = 印度疫情数据['data'][0]['trend']['updateDate'][:269:1]

# 获取 确诊 数据用于Y轴
y轴美国确诊数据 = 美国疫情数据['data'][0]['trend']['list'][0]['data'][:314:1]
y轴日本确诊数据 = 日本疫情数据['data'][0]['trend']['list'][0]['data'][:315:1]
y轴印度确诊数据 = 印度疫情数据['data'][0]['trend']['list'][0]['data'][:269:1]


# 由于美国和印度的日期不全,相应的确诊数据列表位数不相等,我们需要把列表位数补相等
补位列表 = 相关数据_处理函数集.补0列表(len(y轴日本确诊数据) - len(y轴美国确诊数据))
y轴美国确诊数据 = 补位列表+y轴美国确诊数据

补位列表 = 相关数据_处理函数集.补0列表(len(y轴日本确诊数据) - len(y轴印度确诊数据))
y轴印度确诊数据 = 补位列表+y轴印度确诊数据   # 补的位数数据都是 0 ,位置在前面

# 列表数据位数都相同了
print(len(y轴日本确诊数据), len(y轴印度确诊数据), len(y轴美国确诊数据))


# 生成图表
# 美国疫情折线图 = Line()
# 日本疫情折线图 = Line()
# 印度疫情折线图 = Line()
折线图 = Line()

折线图.add_xaxis(x轴日本日期数据)


折线图.add_yaxis("美国确诊人数", y轴美国确诊数据, label_opts=LabelOpts(is_show=False))  # 第3给参数是折线图系列设置,把线上的数字去掉
折线图.add_yaxis("日本确诊人数", y轴日本确诊数据, label_opts=LabelOpts(is_show=False))
折线图.add_yaxis("印度确诊人数", y轴印度确诊数据, label_opts=LabelOpts(is_show=False))

# 折线图全局设置
折线图.set_global_opts(
    # 标题选项  pos是位置 left是左边 (这里我们居中)  bottom是底部 (底部百分之1)
    title_opts=TitleOpts(title="2020年3国疫情确诊人数", pos_left="center", pos_bottom="1%"),
    # 图例选项 这里是显示
    legend_opts=LegendOpts(is_show=True),
    # 工具箱选项 这里是显示
    toolbox_opts=ToolboxOpts(is_show=True),
    # 视觉映射 这里是显示
    # visualmap_opts=VisualMapOpts(is_show=True),

)

折线图.render()
